Asynchronous embedded static random access memory (SRAM) is a common memory device that requires refreshing of its memory cells to retain stored data. Embedded SRAM memory cells are typically composed of devices that hold data without having to refresh individual cells. However, the cells must have a complete electrical path in order to avoid a float state that may cause data integrity loss. Rather than refreshing on a periodic basis, which decreases the time during which a memory may be accessed, refreshes of the memory cells are typically performed only during a read operation, during which the memory cells are read and a complete electrical path is maintained to enable the memory to retain the data.
A typical memory array includes eight word rows and multiple base two columns. The row is first selected and then the column is selected to cause the data from a particular memory cell to be addressed and refreshed by maintaining a completed electrical path. However, a circuit design using memory may not require an entire full base two range of columns or blocks or all the possible memory addresses in a row. Power conservation and gate efficiency is an important factor in circuit design and, thus, it is desirable to eliminate unnecessary memory capacity. For example, in the case of application specific integrated circuit (ASIC) standard 2 port memory, users may configure the word length, bit length and x-y ratio by entering a desired memory length resulting in odd numbers of word lengths. When the addresses of words are not used, they are referenced as a global out of range in the case of an unused column address or a local out of range in the case of unused row addresses. For example, if a memory only requires 59 words, there would be 7 full columns, but the last column would use only rows 0-2 and, thus, rows 3-7 are out of range local addresses.
To read data from each cell, an address is sent to various row bit lines and column select lines that allow a particular word to be read. However, the cells must be refreshed during any read request because there is no scheduled refresh of the memory cells. In the case of a read request directed to either a local or global out of bounds address (e.g., an attempt to access the words rows 3-7 in the last column in the above example), the read request results in not refreshing the accessed memory because the appropriate row and column does not exist, thereby breaking the complete electrical path and resulting in the row bit line floating in a tristate condition and destroying stored data. Thus, to insure that the memory array is refreshed whenever an out of range address is received, the words in an existing row or column must be addressed to refresh the memory. The logic to determine the out of range address and refresh the appropriate existing memory blocks requires additional gates (e.g., out of range detection logic) and increases power consumption. In certain cases, access time to the memory is also increased because of the complexity of the out of range detection logic. Further, drive conflicts may occur because of propagation delay causing interference with subsequent read requests.